//studentSession.java
package studentSession;

import java.rmi.RemoteException;
import java.util.Vector;

import javax.ejb.EJBObject;

import offer.Offer;

import academicSup.AcademicSup;
import descriptor.AcademicSupDescriptor;
import descriptor.AcademicSupListDescriptor;
import descriptor.CVDescriptor;
import descriptor.CVListDescriptor;
import descriptor.CitiesListDescriptor;
import descriptor.CompaniesListDescriptor;
import descriptor.CompanyDescriptor;
import descriptor.CompanySupDescriptor;
import descriptor.CountriesListDescriptor;
import descriptor.OfferListDescriptor;
import descriptor.QueryDescriptor;
import descriptor.QueryListDescriptor;
import descriptor.SectorsListDescriptor;
import descriptor.TimetableDescriptor;
import descriptor.TimetableListDescriptor;
import descriptor.UserDescriptor;

/**
 * studentSession interface
 * 
 * @author Mamadou TOURE
 * 
 * The studentSession interface defines all the business method that a client can invoke remotely 
 * on the object (studentSessionBean).
 * 
 * Note :	-We use @SuppressWarnings("unchecked") to avoid the warning about the collection element type.
 */
@SuppressWarnings("unchecked")
public interface StudentSession extends EJBObject 
{	
	public String getName() throws RemoteException;
	public String getFirstname() throws RemoteException;
	public String getLogin() throws RemoteException;
	public String getDegree() throws RemoteException;
	public String getMail() throws RemoteException;
	public String getPassword() throws RemoteException;
	public AcademicSupDescriptor getAcademicSup() throws RemoteException;
	public CompanySupDescriptor getCompanySup() throws RemoteException;
	public boolean isLogged() throws RemoteException;
	public void setLogged() throws RemoteException;
	public void updateMail(String email) throws RemoteException;
	public void updatePasswd(String passwd) throws RemoteException;
	public CVListDescriptor viewCVs() throws RemoteException;
	public CVDescriptor viewCV(int CVid) throws RemoteException;
	public boolean uploadCV(String fileName,String fileLocation,boolean auth) throws RemoteException;
	public boolean deleteCV(int CVid) throws RemoteException;
	public boolean updateCV(int CVid,boolean auth) throws RemoteException;
	public CompaniesListDescriptor getAllCompanies() throws RemoteException;
	public CompanyDescriptor getCompany(int id) throws RemoteException;
	public AcademicSupListDescriptor getAllAcademicSup() throws RemoteException;
	public AcademicSupListDescriptor getAcademicSup(String dep) throws RemoteException;
	public OfferListDescriptor viewPersonalOffers() throws RemoteException;
	public OfferListDescriptor viewAllOffers() throws RemoteException;
	public OfferListDescriptor viewAllOffers2() throws RemoteException;
	public boolean acceptOffer(int id) throws RemoteException;
	public boolean rejectOffer(int id) throws RemoteException;
	public void editDiary(String newline) throws RemoteException;
	public String viewDiary1() throws RemoteException;
	public String viewDiary2() throws RemoteException;
	public QueryListDescriptor viewAllQuery() throws RemoteException;
	public boolean sendQuery(int academicSupID, String message, int offerID) throws RemoteException;
	public boolean deleteQuery(int queryID) throws RemoteException;
	public TimetableListDescriptor getAllEvents() throws RemoteException;
	public TimetableListDescriptor getEvents(int day, int month, int year) throws RemoteException;
	public boolean addEvent(String name,int day,int month, int year,int hour, int minute,String recruiterName, String offerName) throws RemoteException;
	public boolean addMultiEvent(String name,int day1,int month1, int year1,int day2,int month2, int year2) throws RemoteException;
	public boolean deleteEvent(int eventID) throws RemoteException;
	public boolean editedEvent(int eventID,String name,int day,int month,int year,int hour, int minute, String recruiterName, String offerName) throws RemoteException;
	public TimetableDescriptor editEvent(int eventID) throws RemoteException;
	public CompaniesListDescriptor viewCompaniesPref() throws RemoteException;
	public boolean setCompanyPref(int id) throws RemoteException;
	public boolean deleteCompanyPref(int id) throws RemoteException;
	public SectorsListDescriptor viewSectorsPref() throws RemoteException;
	public boolean setSectorPref(Vector<Integer> vecID) throws RemoteException;
	public boolean deleteSectorPref() throws RemoteException;
	public CitiesListDescriptor viewCitiesPref() throws RemoteException;
	public boolean setCityPref(Vector<Integer> vecID) throws RemoteException;
	public boolean deleteCityPref() throws RemoteException;
	public CountriesListDescriptor viewCountriesPref() throws RemoteException;
	public boolean setCountryPref(Vector<Integer> vecID) throws RemoteException;
	public boolean deleteCountryPref() throws RemoteException;
	public SectorsListDescriptor getSectors() throws RemoteException;
	public CitiesListDescriptor getCities() throws RemoteException;
	public CountriesListDescriptor getCountries() throws RemoteException;
	public CompaniesListDescriptor getCompanies() throws RemoteException;
	/*
	public void viewOffers(Collection offersCriteria);
	
	public void chooseCompanies(Collection companiesCriteria);
	public void removeCompany(String companyName);
	
	public void acceptOffer(Offer offer);
	public void rejectOffer(Offer offer);

	timetable*/

}

